package qc.common.core.utils;

/**
 * 渠成开发调试工具类
 * 2025/8/29，实测直接使用Logback即可，在console和日志记录中功能均可实现，不再重复造轮子
 *
 * @author QuCheng Tech
 * @since 2025/8/22
 */
@Deprecated
public class QcDebugUtil {

    public static void outputError(String moduleName, String info, Object data) {
        output(moduleName, info, data, 31);
    }

    public static void outputInfo(String moduleName, String info, Object data) {
        output(moduleName, info, data, 32);
    }

    public static void outputWarn(String moduleName, String info, Object data) {
        output(moduleName, info, data, 33);
    }

    /**
     * 输出显示信息，输出信息按照以下格式：时间 msg
     *
     * @param moduleName 模块名称
     * @param info       信息内容
     * @param level      等级数字，显示的文字颜色不同
     * @return void
     * @author QuCheng Tech
     * @since 2025/8/22
     */
    public static void output(String moduleName, String info, int level) {
        output(moduleName, info, null, level);
    }

    /**
     * 输出显示信息，输出信息按照以下格式：时间 msg \r\n data
     *
     * @param moduleName 模块名称
     * @param info       信息内容
     * @param level      等级数字，显示的文字颜色不同
     * @param data       数据对象
     * @return void
     * @author QuCheng Tech
     * @since 2025/8/22
     */
    public static void output(String moduleName, String info, Object data, int level) {
        //\033[0m：重置所有属性，恢复到默认值
        //\033[30m：设置文本颜色为黑色
        //\033[31m：设置文本颜色为红色
        //\033[32m：设置文本颜色为绿色
        //\033[33m：设置文本颜色为黄色
        //\033[34m：设置文本颜色为蓝色
        //\033[36m：设置文本颜色为青色
        if (level == 31)//红色文字显示错误信息
            System.out.println(DateUtil.getDateTimeString(DateUtil.getNowDate()) + "\t\033[31mERROR\t\033[36m" + moduleName + "\t\033[0m" + info);
        else if (level == 32)//绿色文字显示提示信息
            System.out.println(DateUtil.getDateTimeString(DateUtil.getNowDate()) + "\t\033[32mINFO\t\033[36m" + moduleName + "\t\033[0m" + info);
        else if (level == 33)//黄色文字显示警告信息
            System.out.println(DateUtil.getDateTimeString(DateUtil.getNowDate()) + "\t\033[33mWARN\t\033[36m" + moduleName + "\t\033[0m" + info);
        else//蓝色文字显示未知等级信息
            System.out.println(DateUtil.getDateTimeString(DateUtil.getNowDate()) + "\t\033[34mDEBUG\t\033[36m" + moduleName + "\t\033[0m" + info);

        //如果data不为null则进行显示
        //if (data != null)
        //    System.out.println(JsonUtil.toJSONString(data));
    }
}
